Reward.tsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { ShopProductItem } from "@/api/depositsApi";
  2. import clsx from "clsx";
  3. import React from "react";
  4. import styles from "./reward.module.scss";
  5. interface Props {
  6. data: ShopProductItem;
  7. }
  8. const mapKey: any = {
  9. 1: "Saldo",
  10. 2: "Bonus",
  11. 3: "Free",
  12. 4: "Replay",
  13. };
  14. const Reward: React.FC<Props> = ({ data }) => {
  15. const getSuffix = (type: 1 | 2) => {
  16. const typeMap: any = {
  17. 1: "BRL",
  18. 2: "%",
  19. };
  20. return typeMap[type];
  21. };
  22. const renderData = React.useMemo(() => {
  23. if (!!(!data?.activity_reward || !data?.activity_reward)) return [];
  24. const result: any = {};
  25. if (data?.activity_reward?.length > 0) {
  26. data?.activity_reward?.forEach((item) => {
  27. if (item?.item_id <= 0 || item?.item_id > 4) return;
  28. result[item?.item_id] = {
  29. amount: `${item?.amount}`,
  30. reward: item?.reward,
  31. };
  32. });
  33. }
  34. if (data?.pay_reward?.length > 0) {
  35. data?.pay_reward?.forEach((item) => {
  36. if (item?.item_id <= 0 || item?.item_id > 4) return;
  37. const hasData = result[item?.item_id];
  38. let amount = "";
  39. if (hasData) {
  40. if (hasData.reward === item.reward) {
  41. amount = `${Number(hasData.amount) + Number(item?.amount)}`;
  42. } else {
  43. amount = `${hasData?.amount}${getSuffix(hasData.reward)}+${item?.amount}${getSuffix(item.reward)}`;
  44. }
  45. } else {
  46. amount = `${item?.amount}`;
  47. }
  48. result[item?.item_id] = {
  49. amount: `${amount}${typeof amount === "string" ? "" : getSuffix(item.reward)}`,
  50. };
  51. });
  52. }
  53. // return result;
  54. return {
  55. ...result,
  56. };
  57. }, [data]);
  58. // D 1现金2彩金3免费币4重玩币
  59. if (Object.keys(renderData).length === 0) return <div className="h-[50px] w-[1px]"></div>;
  60. return (
  61. <div className={clsx(styles.rewardBox, "text-[.1rem] text-[#ccc]")}>
  62. {Object.keys(renderData).map((key) => {
  63. if (renderData[key] === 0) return null;
  64. return (
  65. <div key={key} className={styles.rewardItem}>
  66. <i className={clsx(styles[mapKey[key]])}></i>
  67. <div className="relative -top-[5px] text-[#fff]">
  68. <div>{mapKey[key]}</div>
  69. <div>{renderData[key].amount}</div>
  70. </div>
  71. </div>
  72. );
  73. })}
  74. </div>
  75. );
  76. };
  77. export default Reward;